// 引入弹框
import app from '../../main'

/**
 * 是否选择了商品
 *
 * @param  { Object } params 需要检验的参数
 */
export const isSeletedGoods = (params) => {
  // 如果没有输入商品的链接或者选择商品
  if (!params.goodsIdList && !(params.linkedProductUrl || params.goodsDetailUrl)) {
    app.$toast('请选择商品列表或者填写商品链接')
    return false
  }
  return true
}

/**
 * 是否输入了楼层名称
 *
 * @param  { Object }  params 需要检验的参数
 * @param  { Boolean } isPC   当前是否是PC
 */
export const hasFloorName = (params, isPC) => {
  // 如果楼层名称没有填写
  if (!params.floorName && (params.displayMode == 0) && isPC) {
    app.$toast('请输入楼层名称')
    return false
  }
  return true
}

/**
 * 是否输入了楼层名称
 *
 * @param  { Object } params 需要检验的参数
 */
export const hasNavName = (params) => {
  // 如果楼层名称没有填写
  if (!params.navigationName) {
    app.$toast('请输入导航名称')
    return false
  }
  return true
}

/**
 * url正则表达式
 *
 * @param  { String } url url链接
 */
export const url = (url) => {
  let urlRegExp = /^((https|http|ftp|rtsp|mms)?:\/\/)+[A-Za-z0-9]+\.[A-Za-z0-9]+[/=?%\-&_~`@[\]':+!]*([^<>""])*$/
  return urlRegExp.test(url)
}

/**
 * 是否是url链接
 *
 * @param  { Object } params 参数集合
 */
export const isTrueUrl = (params) => {
  // 校验url链接是否合法
  if (params.linkedProductType == 1 && !url(params.linkedProductUrl)) {
    app.$toast('请输入正确的商品链接')
    return false
  }

  // 校验url链接是否合法
  if (params.navigationType == 1 && !url(params.goodsDetailUrl)) {
    app.$toast('请输入正确的商品链接')
    return false
  }
  return true
}

/**
 * 是否上传了商品图片
 *
 * @param  { Object } params 需要检验的参数
 */
export const hasImageUpload = (params) => {
  // 如果当前展示图片
  if (params.displayMode == 1 || params.displayMode == 2) {
    // 如果商品图片不存在
    if (!params.floorPhotoId) {
      app.$toast('请上传图片')
      return false
    }
    return true
  }
  return true
}

/**
 * 校验是否填写了排序
 */
export const hasSequence = (params) => {
  if (!params.sequence && params.sequence != 0) {
    app.$toast('请填写排序')
    return false
  }
  return true
}

/**
 * 校验楼层上传的参数
 *
 * @param  { Object }  params 需要检验的参数
 * @param  { Boolean } isPC   当前是否是PC页面
 */
export const validateFloorParam = (params, isPC = true) => {
  // 是否有楼层名称
  if (!hasFloorName(params, isPC) && isPC) {
    return false
  }
  // 是否上传了商品的图片
  if (!hasImageUpload(params)) {
    return false
  }
  // 是否选择了商品
  if (!isSeletedGoods(params)) {
    return false
  }
  // url输入是否合法
  if (!isTrueUrl(params)) {
    return false
  }
  // 校验是否填写了排序
  if (!hasSequence(params)) {
    return false
  }
  return true
}

/**
 * 校验导航上传的参数
 *
 * @param  { Object } params 需要校验的参数
 */
export const validateNavParam = (params) => {
  // 是否有导航名称
  if (!hasNavName(params)) {
    return false
  }
  // 是否上传了商品的图片
  if (!hasImageUpload(params)) {
    return false
  }
  // 是否选择了商品
  if (!isSeletedGoods(params)) {
    return false
  }
  // url输入是否合法
  if (!isTrueUrl(params)) {
    return false
  }
  return true
}

/**
 * 已经选中的商品列表
 *
 * @param { Object } item 当前商品
 */
export const inSelectedGoodsList = (item, goodsList) => {
  // 如果已选商品不存在，则不在已选商品中
  if (!goodsList || goodsList.length == 0) {
    return false
  }

  // 标记当前商品在不在已选商品中
  let flag = false

  // 遍历数据，查看当前是否在已选商品中
  goodsList.forEach((v) => {
    if (v.goodsId == item.id) {
      flag = true
    }
  })
  return flag
}